//() 表示捕获分组，()会把每个分组里的匹配的值保存起来
//(?:) 表示非捕获分组，和捕获分组的区别在于匹配的值不保存
//(?<name>) 表示命名捕获分组，反向引用一个命名分组的语法是\k,在replace方法的替换字符串反向引用用的是$1

//分组捕获
console.log('1ab'.match(/1[a-z]([b-c])/));//b
console.log(`1ab`.match(/1[a-z](?:[a-z])/));//没有捕获任何的分组
//为什么可以通过序号来引用分组的结果 ，后面又有了命名捕获分组？
//因为如果分组特别多的的话，比如说有100个分组。起名字不容易引用错
console.log(`11-22`.replace(/(?<x>\d{2})-(?<y>\d{2})/,"$<y>-$<x>"));
console.log(`11-22`.replace(/(\d{2})-(\d{2})/,"$2-$1"));
